package edu.zut.cs.network;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class HelloWorld {
	static Logger logger=LogManager.getLogger(HelloWorld.class.getName());
	public static void sort(int[] a,int low,int high){
        int start = low;
        int end = high;
        int key = a[low];        
        
        while(end>start){
        	//从后往前比较
            while(end>start&&a[end]>=key)  //如果没有比关键值小的，比较下一个，直到有比关键值小的交换位置，然后又从前往后比较
                end--;//
            if(a[end]<=key){
                int temp = a[end];
                a[end] = a[start];
                a[start] = temp;
            }
          //从前往后比较
            while(end>start&&a[start]<=key)//如果没有比关键值大的，比较下一个，直到有比关键值大的交换位置
               start++;
            if(a[start]>=key){
                int temp = a[start];
                a[start] = a[end];
                a[end] = temp;
            }
          //此时第一次循环比较结束，关键值的位置已经确定了。左边的值都比关键值小，右边的值都比关键值大，但是两边的顺序还有可能是不一样的，进行下面的递归调用
        }
      //递归
        if(start>low) sort(a,low,start-1);//左边序列。第一个索引位置到关键值索-1
        if(end<high) sort(a,end+1,high);//右边序列。从关键值索引+1到最后一个
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//冒泡排序
		int [] a= {75,83,2,61,9,11,18,37,41,6};
		for(int i=0;i<a.length-1;i++) {
			for(int j=0;j<a.length-1-i;j++) {
				if(a[j+1]<a[j]) {
					int temp;
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		for(int i=0;i<a.length;i++) {
			if(logger.isInfoEnabled())
				logger.info(a[i]+" ");
			//System.out.print(a[i]+" ");		
	    }
		//快速排叙
		logger.info("\n");
		logger.info("Hello World");
        int[] m = {12,20,5,16,15,1,30,45,23,9};
        int start = 0;
        int end = m.length-1;
        sort(m,start,end);
        for(int i = 0; i<m.length; i++){
        	logger.info(m[i]+" ");
         }
	}
}
